package models

type SysMenu struct {
	ID         uint   `json:"id" gorm:"primaryKey"`
	ParentId   uint   `json:"parent_id" gorm:"default:0;comment:父级ID"`
	Name       string `json:"name" gorm:"type:varchar(50);not null;comment:菜单名称"`
	Path       string `json:"path" gorm:"type:varchar(255);comment:前端路由地址"`
	Visible    int    `json:"visible" gorm:"default:1;comment:是否可见 1:是 0:否"`
	Perms      string `gorm:"column:perms;varchar(100);comment:'权限标识'" json:"perms"` // 权限标识
	ActiveMenu string `json:"active_menu" gorm:"type:varchar(255);comment:前端路由地址"`

	ApiPath   string    `json:"api_path" gorm:"type:varchar(255);comment:后端API地址"`
	Component string    `json:"component" gorm:"type:varchar(255);comment:前端组件路径"`
	Icon      string    `json:"icon" gorm:"type:varchar(50);comment:图标"`
	Sort      int       `json:"sort" gorm:"default:0;comment:排序"`
	Status    int       `json:"status" gorm:"default:1;comment:状态 1:启用 0:禁用"`
	Hidden    int       `json:"hidden" gorm:"default:0;comment:是否隐藏 1:是 0:否"`
	Type      int       `json:"type" gorm:"default:1;comment:类型 1->目录;2->菜单;3->按钮 4->后端接口"`
	Roles     []SysRole `json:"roles" gorm:"many2many:sys_role_menus;foreignKey:ID;joinForeignKey:MenuId;References:ID;joinReferences:RoleId"`
	Children  []SysMenu `json:"children" gorm:"-"`
	Remark    string    `json:"remark" gorm:"type:varchar(255);comment:备注"`
	IsFrame   bool      `gorm:"column:is_frame;comment:'是否外链（1 否 2 是）'" json:"isFrame"` // 是否外链

	Timestamps
	SoftDeletes
}

// 类型枚举
const (
	MenuTypeDir    = iota + 1 // 目录
	MenuTypeMenu              // 菜单
	MenuTypeButton            // 按钮
	MenuTypeApi               // 接口
)
